package com.hyt.it.ogt.common.config;

import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.context.annotation.Configuration;

/**
 * 全局变量
 */
@Data
@RefreshScope
@Configuration
public class GlobalConfig {

    /**
     * 华为云文件上传目录
     */
    @Value("${hwCloud.hwCloudFileDict}")
    private String hwCloudFileDict;

    /**
     * 华为云文件设置分段上传时的最大并发数
     */
    @Value("${hwCloud.taskNum}")
    private Integer taskNum;

    /**
     * 华为云文件设置分段大小
     */
    @Value("${hwCloud.partSize}")
    private Long partSize;

    /**
     * 华为云文件设置数据反馈上传进度
     */
    @Value("${hwCloud.progressInterval}")
    private Long progressInterval;

    /**
     * 允许文件上传异常次数
     */
    @Value("${hwCloud.retryNum}")
    private Integer retryNum;

    /**
     * 文件生成超过指定等待时间
     */
    @Value("${hwCloud.fileTimeOut}")
    private Long fileTimeOut;

    /**
     * 文件质量
     */
    @Value("${exchange.quality}")
    private Long quality;

    /**
     * 显示在导出图片中的答题图片宽度(注意，这里只是显示图片内容的宽度，实际导出图片的宽度会大概加100px)
     */
    @Value("${exchange.anwserpicterwith:600}")
    private Long anwserpicterwith;

    /**
     * 使用wkhtmltoX生成图片
     */
    @Value("${exchange.useWkToImage:false}")
    private Boolean useWkToImage;

    /**
     * 考场人数间隔
     */
    @Value("${download.roomSpace:5}")
    private Integer roomSpace;

    /**
     * 考场区域编码
     */
    @Value("${download.roomArea:440300}")
    private String roomArea;

    /**
     * 多线程一次处理考生人数
     */
    @Value("${download.batchExamineSize:100}")
    private Integer batchExamineSize;

    /**
     * 考务标记考生人数
     */
    @Value("${project.batchExamineeMarkSize:1000}")
    private Integer batchExamineeMarkSize;

    /**
     * 证书专业Code
     */
    @Value("${certificate.template.config.specialityCode}")
    private String specialityType;

    /**
     * 证书级别Code
     */
    @Value("${certificate.template.config.levelCode}")
    private String levelCode;

    /**
     * 性别code
     */
    @Value("${certificate.template.config.sexCode}")
    private String sexCode;

    /**
     * 证件类型code
     */
    @Value("${certificate.template.config.idType}")
    private String idType;

    /**
     * excel处理的最大行
     */
    @Value("${certificate.template.excel.xlsMaxRow}")
    private Integer xlsMaxRow;

    /**
     * excel默认列宽
     */
    @Value("${certificate.template.excel.defaultColumnWidth}")
    private Integer defaultColumnWidth;

    /**
     * 考生证书生成分区大小
     */
    @Value("${certificate.examinees.partitionSize}")
    private Integer partitionSize;

    /**
     * 导入考生照片zip包大小 MB
     */
    @Value("${certificate.examinees.headPhotoFileMaxSize}")
    private Integer headPhotoFileMaxSize;

    /**
     * 水印描述
     */
    @Value("${certificate.examinees.waterMarkDesc}")
    private String waterMarkDesc;

    /**
     * 水印字体url
     */
    @Value("${certificate.examinees.waterFontUrl}")
    private String waterFontUrl;

    /**
     * 是否生成水印
     */
    @Value("${certificate.examinees.hasWaterFont:true}")
    private Boolean hasWaterFont;

    /**
     * 文件类型
     */
    @Value("${certificate.file.uploadType}")
    private String certificateFileUploadType;

    /**
     * 转换成byte长度
     *
     * @return
     */
    public long getHeadPhotoFileMaxSizeToByte() {
        return headPhotoFileMaxSize * 1024L * 1024L;
    }
}
